# For more information about using CMake with Android Studio, read the
# documentation: https://d.android.com/studio/projects/add-native-code.html

# Sets the minimum version of CMake required to build the native library.

cmake_minimum_required(VERSION 3.4.1)

#message("ANDROID_SYSROOT :: ${ANDROID_SYSROOT}")

message("CMAKE_BUILD_TYPE :: ${CMAKE_BUILD_TYPE}")
message("ENABLE_LOG :: ${ENABLE_LOG}")
message("DEBUG :: ${DEBUG}")
set(CMAKE_C_STANDARD 11)

if (${CMAKE_BUILD_TYPE} MATCHES Debug)
    add_definitions(-DENABLE_LOG)
    add_definitions(-DDEBUG)
    add_definitions(-DDEMO)
endif ()

if (${CMAKE_BUILD_TYPE} MATCHES Release)
    message("hello release")
    if (ENABLE_LOG)
        add_definitions(-DENABLE_LOG)
    endif ()
    if (DEBUG)
        add_definitions(-DDEBUG)
    endif ()


    add_definitions(-mllvm -sub)
    add_definitions(-mllvm -sub_loop=2)

    #    add_definitions(""-mllvm -bcf -mllvm -bcf_loop=2 "") #逻辑混淆 非常耗时
    add_definitions(-mllvm -fla)
    add_definitions(-mllvm -split -mllvm -split_num=2)
    add_definitions(-mllvm -sobf)
    add_definitions(-fvisibility=hidden -fvisibility-inlines-hidden)
endif ()

set(can_use_assembler TRUE)
enable_language(ASM)

include_directories(include)
aux_source_directory(src SRC_DIR)
# Creates and names a library, sets it as either STATIC
# or SHARED, and provides the relative paths to its source code.
# You can define multiple libraries, and CMake builds them for you.
# Gradle automatically packages shared libraries with your APK.

add_library( # Sets the name of the library.
        native-lib

        # Sets the library as a shared library.
        SHARED

        ${SRC_DIR}
        #[[include/AESUtils.h
        src/AESUtils.c
        include/RSAUtils.h
        src/RSAUtils.c]]
        include/md5.h
        src/md5.c
        include/detect.h
        src/detect.c
        include/common.h
        src/common.c

        # Provides a relative path to your source file(s).
        )

# Searches for a specified prebuilt library and stores the path as a
# variable. Because CMake includes system libraries in the search path by
# default, you only need to specify the name of the public NDK library
# you want to add. CMake verifies that the library exists before
# completing its build.

find_library( # Sets the name of the path variable.
        log-lib

        # Specifies the name of the NDK library that
        # you want CMake to locate.
        log)

# Specifies libraries CMake should link to your target library. You
# can link multiple libraries, such as libraries you define in this
# build script, prebuilt third-party libraries, or system libraries.

target_link_libraries( # Specifies the target library.
        native-lib

        # Links the target library to the log library
        # included in the NDK.
        ${log-lib})

target_include_directories(native-lib
        PUBLIC
        E:\\android-ndk-r16b-windows-x86_64\\android-ndk-r16b\\sysroot\\usr\\include
        )

set_target_properties(native-lib PROPERTIES LINK_FLAGS -Wl,--gc-sections)